package com.example.yls.demoa;

import android.location.Location;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;

import com.amap.api.maps.AMap;
import com.amap.api.maps.AMapOptions;
import com.amap.api.maps.CameraUpdate;
import com.amap.api.maps.CameraUpdateFactory;
import com.amap.api.maps.MapView;
import com.amap.api.maps.UiSettings;
import com.amap.api.maps.model.CameraPosition;
import com.amap.api.maps.model.LatLng;
import com.amap.api.maps.model.Marker;
import com.amap.api.maps.model.MarkerOptions;
import com.amap.api.maps.model.MyLocationStyle;

public class MainActivity extends AppCompatActivity implements
        AMap.OnMyLocationChangeListener, AMap.OnMapLongClickListener {

    private AMap aMap;
    private MapView mMapView;
    private MyLocationStyle myLocationStyle;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        //获取地图控件引用
        mMapView = (MapView) findViewById(R.id.map);
        //在activity执行onCreate时执行mMapView.onCreate(savedInstanceState)，创建地图
        mMapView.onCreate(savedInstanceState);

        aMap = mMapView.getMap();
        aMap.showIndoorMap(true);
        aMap.setMapType(AMap.MAP_TYPE_NORMAL);

        aMap.animateCamera(
                CameraUpdateFactory.newCameraPosition(new CameraPosition(
                        new LatLng(23.18321, 113.35311), //经纬度
                        15, //缩放级别 3 -19 3：最大视角，看到全中国，19：最小级别，看到细节
                        30, //视角从垂直于地面，向下倾斜60度，此时与地面夹角是30度
                        0) //地图顺时针旋转90度
                ),
                1500,
                new AMap.CancelableCallback() {
                    @Override
                    public void onFinish() {

                    }

                    @Override
                    public void onCancel() {

                    }
                }
        );

        CameraUpdate mCameraUpdate = CameraUpdateFactory.newCameraPosition(new CameraPosition
                (new LatLng(23.18321,113.35311),15,30,0));
        aMap.moveCamera(mCameraUpdate);
        aMap.setOnMapLongClickListener(this);


        //实例化UiSettings类对象
        UiSettings mUiSettings = aMap.getUiSettings();

        mUiSettings.setCompassEnabled(true);
        mUiSettings.setScaleControlsEnabled(true);
        mUiSettings.setZoomControlsEnabled(true);
        mUiSettings.setLogoPosition(AMapOptions.LOGO_POSITION_BOTTOM_RIGHT);
        mUiSettings.setZoomPosition(AMapOptions.ZOOM_POSITION_RIGHT_BUTTOM); //左下角
        mUiSettings.setZoomPosition(AMapOptions.ZOOM_POSITION_RIGHT_CENTER); //左中间


        initMyLocationStyle();
    }

    private void initMyLocationStyle() {

        myLocationStyle = new MyLocationStyle();
        //初始化定位蓝点样式类
        // myLocationStyle.myLocationType(MyLocationStyle.LOCATION_TYPE_LOCATION_ROTATE);
        // 连续定位、且将视角移动到地图中心点，定位点依照设备方向旋转，并且会跟随设备移动。（1秒1次定位）如果不设置myLocationType，默认也会执行此种模式。

        myLocationStyle.interval(2000);
        //设置连续定位模式下的定位间隔，只在连续定位模式下生效，单次定位模式下不会生效。单位为毫秒。

        aMap.setMyLocationStyle(myLocationStyle);
        //设置定位蓝点的Style
        //aMap.getUiSettings().setMyLocationButtonEnabled(true);设置默认定位按钮是否显示，非必需设置。

        aMap.setMyLocationEnabled(true);
        // 设置为true表示启动显示定位蓝点，false表示隐藏定位蓝点并不进行定位，默认是false。

        aMap.setOnMyLocationChangeListener(this);


    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        //在activity执行onDestroy时执行mMapView.onDestroy()，销毁地图
        mMapView.onDestroy();
    }
    @Override
    protected void onResume() {
        super.onResume();
        //在activity执行onResume时执行mMapView.onResume ()，重新绘制加载地图
        mMapView.onResume();
    }
    @Override
    protected void onPause() {
        super.onPause();
        //在activity执行onPause时执行mMapView.onPause ()，暂停地图的绘制
        mMapView.onPause();
    }
    @Override
    protected void onSaveInstanceState(Bundle outState) {
        super.onSaveInstanceState(outState);
        //在activity执行onSaveInstanceState时执行mMapView.onSaveInstanceState (outState)，保存地图当前的状态
        mMapView.onSaveInstanceState(outState);
    }

    @Override
    public void onMyLocationChange(Location location) {

    }

    @Override
    public void onMapLongClick(LatLng latLng) {

        Log.e("MainActivity","latitude"+latLng.latitude+"longitude="+latLng.longitude);
        Marker marker = aMap.addMarker(new MarkerOptions()
                .position(latLng)
                .title("广交院")
                .snippet("欢迎您"));
//        marker.showInfoWindow();
    }
}

